package qxfw.wx.CimissAPI;

import java.util.HashMap;

import cma.cimiss.client.DataQueryClient;
import qxfw.wx.Util.FormatUtil;

/*
 * 客户端调取，
 * 格点场要素获取（切块），写JSON格式字符串
 */
public class tes {
	/*
    * main方法
    * 如：按经纬范围、起报时间、预报层次、预报时效检索预报要素场 getNafpEleGridInRectByTimeAndLevelAndValidtime
    */
	public static void main(String[] args) {

		/* 1. 定义client对象 */
		DataQueryClient client = new DataQueryClient() ;

		/* 2. 调用方法的参数定义，并赋值 */
		/* 2.1 用户名&密码 */
		String userId = "user_nordb";
		String pwd = "user_nordb_pwd1";
		/* 2.2 接口ID */
		String interfaceId = "getNafpEleGridInRectByTimeAndLevelAndValidtime";
		/* 2.3 接口参数，多个参数间无顺序 */
		HashMap<String, String> params = new HashMap<String, String>();
		// 必选参数
		params.put("dataCode", "NAFP_FOR_FTM_HIGH_T639_NEHE"); // 资料：T639高精度格点产品（东北半球）
		// params.put("dataCode", "NAFP_FOR_FTM_LOW_T639_NEHE");
		// //资料：T639低精度格点产品（东北半球）

		params.put("time", "20150302000000"); // 起报时间
		params.put("validTime", "0"); // 预报时效：0
		params.put("minLat", "39"); // 经纬度范围：北京及周边（纬度39-42，经度115-117）
		params.put("maxLat", "42");
		params.put("minLon", "115");
		params.put("maxLon", "117");
		params.put("fcstEle", "TEM"); // 预报要素（单个)：气温
		params.put("fcstLevel", "1000"); // 预报层次（单个)：1000hpa
		// 可选参数
		// params.put("fcstMember", "1"); //集合预报成员（单个)：从1开始
		/* 2.4 返回文件的格式 */
		String dataFormat = "json";
		/* 2.5 返回字符串 */
		StringBuffer retStr = new StringBuffer();

		/* 3. 调用接口 */
		try {
			// 初始化接口服务连接资源
			client.initResources();
			// 调用接口
			int rst = client.callAPI_to_serializedStr(userId, pwd, interfaceId,
					params, dataFormat, retStr);
			// 输出结果
			if (rst == 0) { // 正常返回
				FormatUtil formatUtil = new FormatUtil();
				formatUtil.outputRstJson(retStr.toString());
			} else { // 异常返回
				System.out
						.println("[error] GridElemRectSearchAPI_CLIB_callAPI_to_serializedStr_JSON.");
				System.out.printf("\treturn code: %d. \n", rst);
			}
		} catch (Exception e) {
			// 异常输出
			e.printStackTrace();
		} finally {
			// 释放接口服务连接资源
			client.destroyResources();
		}
	}
}
